iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

30 天轉生到 bootstrap 5 的意識界系列 第 10

第 10 集:淺談 Container Wrapper 差異

  • 分享至 

  • xImage
  •  

此篇會探討 container 與 wrapper 用法,會著重在 wrapper 的探討。

在開始介紹前,想先說關於 containerwrapper 的關係有不少種解釋,我先簡單分為兩派。

相同派:

  • 兩者用法相同,只有名詞不同。

異同派:

  • 兩者用途不同。

以下內容會以 異同派 的觀點介紹 Wrapper

Container

是一個容器,內入可包含多個元素。

特性:

  • 設置容器大小
  • 容器水平置中

container


Wrapper

兩種常見命名方式都可以 wrapperwrap,其中又有分兩種解釋,下方依序來介紹。

第一種:代表最外層,包含網頁所有內容。

container

看到這張圖,是不是在想圖片放錯了呀!

wrapper1

其實要用一層一層結構來看上面這張圖,第一層是 <body>,下一層是 wrapper,兩者從結構來看其實是重疊的,因此通常會忽略。

那為什麼會需要多這一層 wrapper?

  1. 將網頁元素內容與 <body> 隔開。
  2. 將對全站樣式設置在 wrapper,避免污染到 <body>

上述兩點也有其它方法可以達到相同效果:

  1. <main> HTML 標籤,用來包含主要內容。
  2. EJS 樣板語言。

第二種:內層僅包含 個元素。

wrapper2

結構來看上面這張圖,wrapper 主要用來當作銜接 container 內層元素的街口。

這樣做的好處是?

  1. HTML 結構更清晰
  2. 語意化
  3. 好維護

我覺得有點像 BEM 連接詞的感覺,用來連接父容層器,使階層的關係一眼明瞭。

以上純屬個人言論,若有錯誤歡迎大家在下方留言,也歡迎想交流的都可以在下方留言。


示範

container

  • 通常 .container 會作為外層容器只需設置寬度、margin、padding,且為了提升 .container 的重複利用率,建議保持外層容器的簡潔性,避免設置過多的細節樣式。
.container {
	max-width: 1296px;
	margin: 0 auto;	
}

@media(max-width:1295px){
  .container{
    padding-left: 12px;
    padding-right: 12px;
  }
}

wrapper 用兩個範例介紹

第一種範例:

  • <body> 需要設置的全站樣式,設置在 wrapper 上面。
<body>
  <div class="wrapper">
    <div class="container">
      container
    </div>
  </div>
</body>
.wrapper {
  padding: 40px 20px;
  line-height: 1.5;
}

.container {
  margin: 0 auto;
  max-width: 1000px;
  background: green;
  padding: 20px;
}

第二個範例:

  • wrapper 用來連接 container 內層元素。
<ul class="items-container">
  <li class="item-wrapper">
      <div class="item">...</div>
  </li>
  <li class="item-wrapper">
      <div class="item">...</div>
  </li>
  <li class="item-wrapper">
      <div class="item">...</div>
  </li>
  <li class="item-wrapper">
      <div class="item">...</div>
  </li>
  <li class="item-wrapper">
      <div class="item">...</div>
  </li>
</ul>

結論

沒有哪個更好,只有適不適合。

  • wrapper、container 終究是一種命名的方法,遵循對自己來說更順手、更好閱讀的方式使用即可。

p.s. 關於 wrapper、container 沒有太廣泛的討論,上方是從參考資料加以吸收的論點,一定還有其他更合適的講法,也歡迎大家有任何想法,都歡迎下方留言一起討論~


參考文獻:


上一篇
第 9 集:RWD 響應式斷點設計
下一篇
第 11 集:淺談 Sass
系列文
30 天轉生到 bootstrap 5 的意識界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言